<html>
<head><meta charset="utf-8"><title>edition rfc: &quot;editions are meant to be adopted&quot; · edition 2021 · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/index.html">edition 2021</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html">edition rfc: &quot;editions are meant to be adopted&quot;</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="226673337"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226673337" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226673337">(Feb 17 2021 at 15:31)</a>:</h4>
<p>I'm trying to finalize the Edition RFC this morning so I can get it open. If you take a look at <a href="https://hackmd.io/dRsVUVj5Qoi5oz0aPf_nFg?edit">the draft</a>, you will see that the "motivation" section contains a number of "headings", each of which state a core principle of how we are approaching editions.</p>



<a name="226673399"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226673399" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226673399">(Feb 17 2021 at 15:32)</a>:</h4>
<ul>
<li>Editions enable "stability without stagnation"</li>
</ul>



<a name="226673415"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226673415" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226673415">(Feb 17 2021 at 15:32)</a>:</h4>
<ul>
<li>Editions do not split the ecosystem</li>
</ul>



<a name="226673426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226673426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226673426">(Feb 17 2021 at 15:32)</a>:</h4>
<ul>
<li>Edition migration is easy and largely automated</li>
</ul>



<a name="226673454"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226673454" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226673454">(Feb 17 2021 at 15:32)</a>:</h4>
<ul>
<li>Editions occur periodically</li>
</ul>



<a name="226673881"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226673881" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226673881">(Feb 17 2021 at 15:35)</a>:</h4>
<p>I am adding one more, based on <a href="https://github.com/rust-lang/rust/issues/80165#issuecomment-777057995">my comment here</a>, that </p>
<ul>
<li>Editions are meant to be adopted</li>
</ul>



<a name="226673972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226673972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226673972">(Feb 17 2021 at 15:36)</a>:</h4>
<h2>Editions are meant to be adopted</h2>
<p>Editions go out of their way to preserve older code and ensure that it still compiles. Out of respect for our users, we don't want to force anyone to upgrade an edition on any particular schedule, and we wish to ensure that folks can still use older releases successfully. Nonetheless, all things being equal, we would prefer that folks adopt the new edition, just as we would generally prefer for people to move to the "latest and greatest" ways of using Rust once they are available. This belief can sometimes affect our policy. For example, we might issue lint warnings in older editions which can only be resolved by adopting a newer edition (or marking the lint as <code>#[allow]</code>, of course).</p>



<a name="226674035"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226674035" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226674035">(Feb 17 2021 at 15:36)</a>:</h4>
<p>I'm curious to hear how that paragraph reads to people.</p>



<a name="226677257"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226677257" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226677257">(Feb 17 2021 at 15:55)</a>:</h4>
<p>I think it's the right call; I was wary about general policy initially but I think it will inform this 2021 edition's policy so should be noted.</p>



<a name="226682133"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226682133" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226682133">(Feb 17 2021 at 16:19)</a>:</h4>
<p>I might actually go stronger than just "prefer".  Perhaps something along the lines of "we expect that all actively-developed code will move to the new edition well before the next one comes out".</p>



<a name="226683255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226683255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226683255">(Feb 17 2021 at 16:26)</a>:</h4>
<p>Similarly, "For example, we will not do extra work to expose features on previous editions, as those old editions exist to support old code, not new code.  Features won't be artificially restricted from those editions, if support there is natural, but it's completely acceptable for newly added features to only work on the latest edition".</p>



<a name="226692096"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226692096" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226692096">(Feb 17 2021 at 17:19)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> This seems reasonable to me, as long as we never take it as a hard requirement that <em>all</em> actively developed projects <em>will</em> migrate in a timely fashion. It seems acceptable to lint in previous editions; lints can be disabled or capped. But any reasoning starting with "everyone will have migrated by now, so..." may be problematic.</p>



<a name="226692464"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226692464" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226692464">(Feb 17 2021 at 17:22)</a>:</h4>
<p>I would consider that an exceptional case</p>



<a name="226692493"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226692493" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226692493">(Feb 17 2021 at 17:22)</a>:</h4>
<p>I have secret hopes of being able to kill some old patterns some day</p>



<a name="226692530"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226692530" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226692530">(Feb 17 2021 at 17:23)</a>:</h4>
<p>But tbh I just see editions as one tool of many to being able to do that</p>



<a name="226692561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226692561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226692561">(Feb 17 2021 at 17:23)</a>:</h4>
<p>i.e., along with lints, deprecations, opening PRs, and all kinds of other things</p>



<a name="226692575"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226692575" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226692575">(Feb 17 2021 at 17:23)</a>:</h4>
<p>the basic idea being "we can kill some old pattern if nobody is relying on code that uses it"</p>



<a name="226692618"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226692618" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226692618">(Feb 17 2021 at 17:23)</a>:</h4>
<p>I don't actually know what pattern I would want to kill, I just want us to avoid getting stuck maintaining the rust equivalent of trigraphs for 22 years</p>



<a name="226692784"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226692784" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226692784">(Feb 17 2021 at 17:24)</a>:</h4>
<p>As Rust becomes more widely adopted, our ability to use crater to say "nobody does xyz" will become increasingly limited. There will be code crater doesn't see.</p>



<a name="226693023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226693023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226693023">(Feb 17 2021 at 17:26)</a>:</h4>
<p>I absolutely understand the desire to avoid maintaining a compatibility mechanism if nobody is using it.</p>



<a name="226693399"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226693399" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226693399">(Feb 17 2021 at 17:28)</a>:</h4>
<p>I just want to be careful with the assumption that everyone <em>will</em> upgrade, because as we grow we'll likely get subsets of users who for whatever reason never want to upgrade their code, and want it to keep building with newer Rust. One person's trigraph may be another person's Python 3.</p>



<a name="226694752"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226694752" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226694752">(Feb 17 2021 at 17:37)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/268952-edition/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22/near/226692784">said</a>:</p>
<blockquote>
<p>As Rust becomes more widely adopted, our ability to use crater to say "nobody does xyz" will become increasingly limited. There will be code crater doesn't see.</p>
</blockquote>
<p>I wouldn't propose such a change based solely on crater results</p>



<a name="226694768"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226694768" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226694768">(Feb 17 2021 at 17:37)</a>:</h4>
<p>anyway, it's fine, we're arguing future hypotheses</p>



<a name="226694779"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226694779" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226694779">(Feb 17 2021 at 17:37)</a>:</h4>
<p>I don't disagree with any of your points :)</p>



<a name="226694798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226694798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226694798">(Feb 17 2021 at 17:37)</a>:</h4>
<p>and I'm in no rush to make hard changes</p>



<a name="226694844"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226694844" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226694844">(Feb 17 2021 at 17:37)</a>:</h4>
<p>that said, even windows 7 is no longer maintained :)</p>



<a name="226720919"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226720919" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226720919">(Feb 17 2021 at 20:33)</a>:</h4>
<p>don't worry: in 20 years we won't have Rust 2.0, but some upstart kid is gonna take all the lessons and mistakes we learned by then, make the Grime language, and slowly put us all out of work. Then we truly will be C++.</p>



<a name="226731061"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/edition%20rfc%3A%20%22editions%20are%20meant%20to%20be%20adopted%22/near/226731061" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/edition.20rfc.3A.20.22editions.20are.20meant.20to.20be.20adopted.22.html#226731061">(Feb 17 2021 at 21:48)</a>:</h4>
<p>I can't wait for this day!</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>